﻿using LPP.Entity.Media;
using LPP.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LPP.Repository.Medias
{
    public class MediaRepository : IMediaRepository
    {
   
    private readonly SqlDbContext _context;

        public MediaRepository(SqlDbContext context)
        {
            _context = context;
        }

        public async Task<Media> AddMediaAsync(Media media)
        {
            _context.Add(media);
            await _context.SaveChangesAsync();
            return media;
        }

        public async Task<Media> GetMediaByIdAsync(int id)
        {
            return await _context.Set<Media>().FindAsync(id);
        }


       public async Task<List<Media>> GetAllMediaAsync()
        {
            return await _context.Set<Media>().ToListAsync();
        }
       
        public async Task LikeMediaAsync(int id)
        {
            var media = await _context.Set<Media>().FindAsync(id);
            if (media != null)
            {
                media.Likes++;
                await _context.SaveChangesAsync();
            }
        }

        public async Task ShareMediaAsync(Share share)
        {
            _context.Shares.Add(share);
            await _context.SaveChangesAsync();
        }

        public async Task FavoriteMediaAsync(Favorite favorite)
        {
            _context.Favorites.Add(favorite);
            await _context.SaveChangesAsync();
        }
        public void Add(Media media)
        {
           // _context.Media.Add(media);
            _context.SaveChanges();
        }

       /* public Media Get(int id)
        {
            return _context.Media.Find(id);
        }*/
    }
}
